<?php

/**
 * 后台首页相关
 */

namespace app\admin\controller;

use app\admin\controller\Tree;
use app\admin\controller\role;

class Index extends BaseController
{
    /**
     * 视图
     */
    public function index()
    {
        // 获取登录用户信息
        $userinfo = $this->userinfo;
        // 获取用户权限
        $ids = $this->role_auty_id;
        // 定义查询条件
        $where["status"] = 1;
        // 查询模块信息
        $module = db("module")->where($where);
        if (!empty($ids)) {
            $module = $module->whereIn('id', $ids);
        }
        $module = $module->order("orders asc,create_time desc")->select();
        // 转换模块信息为树形解构
        $module = Tree::makeTree($module);
        // 查询系统设置信息
        $system = db("system")->where("id", "=", 1)->find();
        $this->assign("module", $module);
        $this->assign("userinfo", $userinfo);
        $this->assign("system", $system);
        $this->assign("api_url", config("api_url"));
        return view();
    }

    /**
     * 首页视图
     */
    public function console()
    {
        // 查询首页显示的模块信息
        // $loginTotal = db("login_log")->count();
        // $registersTotal = db("member")->count();
        // $visitTotal = db("website_visit")->count();
        // 重组定义
        $counts = ["loginTotal" => 0, "registersTotal" => 0, "visitTotal" => 0];
        $this->assign("order", []);
        $this->assign("counts", $counts);
        return view();
    }

    /**
     * 关键字检索
     */
    public function search()
    {
        // 获取参数
        $params = input("get.");
        // 获取角色权限
        $ids = $this->role_auty_id;
        // 定义查询条件
        // $where["status"] = 1;
        // $where["path"] = ["neq", ''];
        // $where["title"] = ["like", '%' . $params["keywords"] . '%'];
        // 获取毫秒
        $t1 = self::msectime();
        // 查询模块信息
        $info = db("module")->where('status', 1)->where('path', '<>', '')->whereLike('title', '%' . $params["keywords"] . '%');
        if (!empty($ids)) {
            $info = $info->whereIn('id', $ids);
        }
        $info = $info->select();
        // 获取毫秒
        $t2 = self::msectime();
        // 查询模块信息所执行时间
        $exec_times = $t2 - $t1;
        // 获取查询数据条数
        $count = count($info);
        $this->assign("info", $info);
        $this->assign("count", $count);
        $this->assign("exec_times", $exec_times);
        $this->assign("keywords", $params["keywords"]);
        return view();
    }

    /**
     * 获取毫秒
     * @return float
     */
    public static function msectime()
    {
        list($msec, $sec) = explode(' ', microtime());
        $msectime = (float)sprintf('%.0f', (floatval($msec) + floatval($sec)) * 1000);
        return $msectime;
    }
}
